home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
pascal
/
tpa22.zip
/
TP&ASM2.REF
< prev
next >
Wrap
Text File
|
1989-04-22
|
23KB
|
658 lines
TP&Asm Integrated Compile-Time Assembler Version 2.0
TP&Asm-M Memory Mode Assembly Language Development Tool Version 2.0
Copyright (c) 1989 Richard W. Prescott
All Rights Reserved
═══════ Built-In Assembly Language Support for Turbo Pascal Compilers ═══════
All brand and product names mentioned herein are trademarks or registered
trademarks of their respective holders.
┌─────────────────────────────────────────────────────────────────────┐
│ This file contains detailed reference information to enable you to │
│ make effective use of the TP&Asm assembly environment. For general │
│ information on getting started please see the file README. │
└─────────────────────────────────────────────────────────────────────┘
The following topics are described below:
8. Error Messages
9. Trouble Shooting
The following additional topics are covered in the separate file
TP&ASM.REF:
1. Command Line Options
2. The Assemble Statement
3. The Asm Statement
4. The Internal Statement
5. General Assembler Syntax
6. TP&Asm-specific Options
7. Supported Mnemonics
8. Error Messages
The following is an alphabetical listing of all syntax error
messages generated by the current version of TP&Asm, together with
very brief explanations of messages which are not self-explanitory.
All assembler syntax errors use error number 200.
[Symbol] Must be declared FORWARD or in INTERFACE
INTERNAL Assembly PROCs must be defined in your Pascal Code
"Dd $" Not Permitted
"Proc/Function + Offset" Not Allowed
The Turbo linker does not permit reference to Pascal Procedures
and Functions with non-zero numeric offsets.
(INTERNAL) Cannot refer to parameters/result by name
(INTERNAL) Proc definition expected
(WARNING) Altered BP May Prevent Local Variable Access
(WARNING) Altered Ds May Prevent Access to Turbo VARs
(WARNING) Altered Seg May Prevent Access to Turbo VARs
Ss and Bp must be restored before referencing Local variables and
parameters by name. Ds must be restored before referencing Global
variables and Typed Constants by name.
(WARNING) ES may be undefined
You have explicitly or implicitly (via a String mnemonic) used the
Es register without initializing it.
(WARNING) May Require Segment Override
TP&Asm will use the default segment for indexed memory references
which do not contain a named variable offset. The default segment
is Ss for references involving the Bp register, and Ds for all
others.
(WARNING) Possible invalid operand or forward reference
Assembler Symbol Overflow
You have attempted to define more than 4K of symbols in the
current Assembly block or Internal PROC. Break into smaller
blocks or convert some code or data labels to Pascal using
LABEL and VAR statements.
Bad Identifier Character
Bad Identifier Start
TP&Asm Code and Data labels may contain only alphanumeric
characters and the special characters @, _, $, and ?. They
must begin with a letter, @, or _.
Base or Index Register Required
When Presumptions are disabled you must supply a proper index
register (usually [Bp]) to reference local VARs.
BY requires Byte operand
Byte operand required
Cannot Call Short
The processor does not support a two byte Call instruction
Cannot DUP Address Reference
Cannot DUP Forward Reference
Cannot EQUate to Assembly Variable
Cannot EQUate to Forward Symbol
Cannot EQUate to Pascal Symbol
Operands to EQU must be numeric expressions or indexed memory
references.
Cannot Nest Far Procs
All Assemble PROCs and nested INTERNAL PROCs must be NEAR.
Cannot nest address reference
Cannot Nest Memory Reference
Cannot Nest Pascal Symbols
Parentheses may contain ONLY constants and numeric expressions.
Cannot Pop CS
Code Label Duplicates Pascal Symbol
Since TP&Asm allows forward references to Code labels, Code labels
must be unique from all Pascal symbols. Data labels may redefine
Pascal symbols (within the current Assemble/Internal statement).
Colon or data size specifier required
Code labels require ':' or 'PROC'. Data labels require a data
definition directive (DB, DW, DD, EQU) or size qualifier (B, W,
Byte Ptr, etc).
CsData MUST be First Code in Unit
A Procedure or Function BEGIN block has preceded the CsData
statement. The CsData statement, if used, must be the first
code block in the program or unit.
Data Name expected
Labels are required in Data Segment data allocation statements
Duplicate Label
Empty quote
ENDP Expected
EQUate to CODE Symbol not supported
Operands to EQU must be numeric expressions or indexed memory
references.
Error In Define Data
Error in IF statement
A conditional statement in an (Assembly) Inline directive/MACRO
generated no code or exceeded 127 bytes.
Error In Jump Statement
The operand to a Call or Jmp must be a single Pascal or Assembly
label, a single Pascal Procedure or Function identifier, or a
variable or memory expression.
Error in Mnemonic
Invalid symbol found in mnemonic field
Full record specification required
References to record components must be prefixed by a valid
Record Variable or TYPE qualifier, as discussed in the notes
to the section on General Assembler Syntax.
Incorrect Syntax
When the 'Offset' qualifier is used, the DESTINATION operand
must be a Register; 'Mov Var1,Offset Var2' is not permitted.
INTERNAL Identifier required before NewLine
You must specify a unique Pascal identifier on the same line as
the keyword 'Internal'. See sample file INTERNAL.PAS.
Invalid Absolute CSeg Reference in Assembly MACRO
Inline Directives must not make direct reference to code or data
labels except in Direct control transfer instructions.
Invalid Absolute CSeg Reference
Location counter ($) references and data type references to code
and data labels are permitted only in the FIRST code block within
any program or unit. Location counter ($) references are not
permitted in Jumps or EQUates, nor in (Assembly) Inline directive/
MACROS. Note: THIS MESSAGE MAY INDICATE AN UNDEFINED PASCAL
SYMBOL. If the undefined symbol is a forward referenced ASSEMBLY
symbol, move the code to the FIRST Proc/Function in the Program or
Unit.
Invalid Address Reference
You have specified a sum or difference of symbol names that does
not resolve to a valid address, displacement, or pure constant.
NOTE: Mov Ax,PasVar1+PasVar2 is not valid because it instructs the
assembler to place MemW[Dseg: OFS(PasVar1) +OFS(PasVar2)] into Ax.
( Instead you must: Mov Ax,PasVar1 and then: Add AX,PasVar2 ).
Please consult a reference on assembly language programming.
Invalid Base Specification [BX] + (implicit) [BP]
Disable presumptions to use [BX] in place of the presumed [BP]
indexing for local variables. (an Ss override will then be
required, as the processor default segment for [Bx] is Ds).
Invalid BIT Syntax
Example: Or Dx,Bit 6 ; same as Or Dx,64
Invalid Byte/Word Combination
Use B or W to override defined variable size:
Mov Al,B IntegerVar
Mov Ax,Word Ptr ByteVar
Invalid Byte/Word/Dword Combination
You have attempted to use a DWord POINTER as a Byte or Word VALUE,
or the reverse. (Remember that VAR parameters are DWord Pointers).
Use B, W, or D to override defined variable size.
Invalid Code Reference
Within the FIRST code block, expressions of the form
"label1-label2+numeric offset"
are permitted, where the labels are code or data labels within the
current assemble statement.
Invalid Conditional Transfer to Proc/Function
Pascal Procedure and Function identifiers are not permitted as
operands to conditional jumps and loops.
Invalid define string operation
Arithmetic is not permitted on DB strings with length >= 2.
Invalid Final Jump or Forward Reference
TP&Asm does not permit the LAST statem